package com.example.spring.bean.load08lifecycle.beanMethod;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;

/**
 * bean创建-->初始化-->销毁 的过程
 * <p>  指定init-method/destroy-method方法
 *
 * <p>  单实例: 当容器创建的时候，会初始化bean，调用init方法，当容器关闭的时候,会调用destroy方法；
 *
 * <p>  多实例: 当容器创建的时候，不会初始化bean，不调用init方法，当容器关闭的时候,不会调用destroy方法，获取bean的时候才进行初始化。
 * 就是说容器不会管理多实例的bean，只负责在调用的时候初始化。
 */
@Configuration
class InitConfig {


    //initMethod 指定这个bean初始化的时候要执行的方法
    //destroyMethod 指定bean销毁的时候要执行的方法
    @Bean(initMethod = "initM", destroyMethod = "destroyM")
    TermObj term() {
        return new TermObj();
    }


    /**
     * 测试多例
     */
    @Bean(initMethod = "cWeek", destroyMethod = "dWeek")
    @Scope("prototype")
    WeekObj week() {
        return new WeekObj();
    }

}
